home *** CD-ROM | disk | FTP | other *** search
/ AMIGA-CD 2 / Amiga-CD - Volume 2.iso / gepackte_disketten / 1994 / 08_94_5.dms / 08_94_5.adf / term-4.0-Source.lha / PathPanel.c < prev    next >
C/C++ Source or Header  |  1994-06-26  |  8KB  |  328 lines

  1. /*
  2. **    PathPanel.c
  3. **
  4. **    Editing panel for path configuration
  5. **
  6. **    Copyright © 1990-1994 by Olaf `Olsen' Barthel
  7. **        All Rights Reserved
  8. */
  9.  
  10. #include "termGlobal.h"
  11.  
  12. enum    {    GAD_AUPLOAD,GAD_ADOWNLOAD,GAD_TUPLOAD,GAD_TDOWNLOAD,
  13.         GAD_BUPLOAD,GAD_BDOWNLOAD,GAD_CONFIGSTORE,GAD_EDITOR,GAD_HELPFILE,
  14.  
  15.         GAD_USE,GAD_CANCEL,GAD_DEFAULT };
  16.  
  17. BYTE __regargs
  18. PathPanel(struct Configuration *Config,BYTE *Default)
  19. {
  20.     struct LayoutHandle    *Handle;
  21.     BYTE             Cancel = FALSE;
  22.  
  23.     SaveConfig(Config,PrivateConfig);
  24.  
  25.     if(Handle = LT_CreateHandleTags(Window -> WScreen,
  26.         LH_LocaleHook,    &LocaleHook,
  27.     TAG_DONE))
  28.     {
  29.         struct Window *Window;
  30.  
  31.         LT_New(Handle,
  32.             LA_Type,    VERTICAL_KIND,
  33.         TAG_DONE);
  34.         {
  35.             LT_New(Handle,
  36.                 LA_Type,    VERTICAL_KIND,
  37.                 LA_LabelID,    MSG_V36_0121,
  38.             TAG_DONE);
  39.             {
  40.                 LT_New(Handle,
  41.                     LA_Type,    STRING_KIND,
  42.                     LA_LabelID,    MSG_PATHPANEL_DEFAULT_ASCII_UPLOAD_PATH_GAD,
  43.                     LA_ID,        GAD_AUPLOAD,
  44.                     LA_Chars,    20,
  45.                     LAST_Picker,    TRUE,
  46.                     GTST_MaxChars,    MAX_FILENAME_LENGTH - 1,
  47.                     LA_STRPTR,    Config -> PathConfig -> ASCIIUploadPath,
  48.                 TAG_DONE);
  49.  
  50.                 LT_New(Handle,
  51.                     LA_Type,    STRING_KIND,
  52.                     LA_ID,        GAD_ADOWNLOAD,
  53.                     LA_LabelID,    MSG_PATHPANEL_DEFAULT_ASCII_DOWNLOAD_PATH_GAD,
  54.                     LAST_Picker,    TRUE,
  55.                     GTST_MaxChars,    MAX_FILENAME_LENGTH - 1,
  56.                     LA_STRPTR,    Config -> PathConfig -> ASCIIDownloadPath,
  57.                 TAG_DONE);
  58.  
  59.                 LT_EndGroup(Handle);
  60.             }
  61.  
  62.             LT_New(Handle,
  63.                 LA_Type,        VERTICAL_KIND,
  64.                 LA_LabelID,        MSG_V36_0122,
  65.             TAG_DONE);
  66.             {
  67.                 LT_New(Handle,
  68.                     LA_Type,    STRING_KIND,
  69.                     LA_LabelID,    MSG_PATHPANEL_DEFAULT_TEXT_UPLOAD_PATH_GAD,
  70.                     LA_ID,        GAD_TUPLOAD,
  71.                     LA_Chars,    20,
  72.                     LAST_Picker,    TRUE,
  73.                     GTST_MaxChars,    MAX_FILENAME_LENGTH - 1,
  74.                     LA_STRPTR,    Config -> PathConfig -> TextUploadPath,
  75.                 TAG_DONE);
  76.  
  77.                 LT_New(Handle,
  78.                     LA_Type,    STRING_KIND,
  79.                     LA_ID,        GAD_TDOWNLOAD,
  80.                     LA_LabelID,    MSG_PATHPANEL_DEFAULT_TEXT_DOWNLOAD_PATH_GAD,
  81.                     LAST_Picker,    TRUE,
  82.                     GTST_MaxChars,    MAX_FILENAME_LENGTH - 1,
  83.                     LA_STRPTR,    Config -> PathConfig -> TextDownloadPath,
  84.                 TAG_DONE);
  85.  
  86.                 LT_EndGroup(Handle);
  87.             }
  88.  
  89.             LT_New(Handle,
  90.                 LA_Type,        VERTICAL_KIND,
  91.                 LA_LabelID,        MSG_V36_0123,
  92.             TAG_DONE);
  93.             {
  94.                 LT_New(Handle,
  95.                     LA_Type,    STRING_KIND,
  96.                     LA_LabelID,    MSG_PATHPANEL_DEFAULT_BINARY_UPLOAD_PATH_GAD,
  97.                     LA_ID,        GAD_BUPLOAD,
  98.                     LA_Chars,    20,
  99.                     LAST_Picker,    TRUE,
  100.                     GTST_MaxChars,    MAX_FILENAME_LENGTH - 1,
  101.                     LA_STRPTR,    Config -> PathConfig -> BinaryUploadPath,
  102.                 TAG_DONE);
  103.  
  104.                 LT_New(Handle,
  105.                     LA_Type,    STRING_KIND,
  106.                     LA_ID,        GAD_BDOWNLOAD,
  107.                     LA_LabelID,    MSG_PATHPANEL_DEFAULT_BINARY_DOWNLOAD_PATH_GAD,
  108.                     LAST_Picker,    TRUE,
  109.                     GTST_MaxChars,    MAX_FILENAME_LENGTH - 1,
  110.                     LA_STRPTR,    Config -> PathConfig -> BinaryDownloadPath,
  111.                 TAG_DONE);
  112.  
  113.                 LT_EndGroup(Handle);
  114.             }
  115.  
  116.             LT_New(Handle,
  117.                 LA_Type,        VERTICAL_KIND,
  118.                 LA_LabelID,        MSG_V36_0124,
  119.             TAG_DONE);
  120.             {
  121.                 LT_New(Handle,
  122.                     LA_Type,    STRING_KIND,
  123.                     LA_LabelID,    MSG_PATHPANEL_CONFIGURATION_STORAGE_DIR_GAD,
  124.                     LA_ID,        GAD_CONFIGSTORE,
  125.                     LA_Chars,    20,
  126.                     LAST_Picker,    TRUE,
  127.                     GTST_MaxChars,    MAX_FILENAME_LENGTH - 1,
  128.                     LA_STRPTR,    Config -> PathConfig -> DefaultStorage,
  129.                 TAG_DONE);
  130.  
  131.                 LT_New(Handle,
  132.                     LA_Type,    STRING_KIND,
  133.                     LA_ID,        GAD_EDITOR,
  134.                     LA_LabelID,    MSG_PATHPANEL_DEFAULT_TEXT_EDITOR_GAD,
  135.                     LAST_Picker,    TRUE,
  136.                     GTST_MaxChars,    MAX_FILENAME_LENGTH - 1,
  137.                     LA_STRPTR,    Config -> PathConfig -> Editor,
  138.                 TAG_DONE);
  139.  
  140.                 LT_New(Handle,
  141.                     LA_Type,    STRING_KIND,
  142.                     LA_ID,        GAD_HELPFILE,
  143.                     LA_LabelID,    MSG_PATHPANEL_HELP_TEXT_FILE_GAD,
  144.                     LAST_Picker,    TRUE,
  145.                     GTST_MaxChars,    MAX_FILENAME_LENGTH - 1,
  146.                     LA_STRPTR,    Config -> PathConfig -> HelpFile,
  147.                 TAG_DONE);
  148.  
  149.                 LT_EndGroup(Handle);
  150.             }
  151.  
  152.             LT_New(Handle,
  153.                 LA_Type,VERTICAL_KIND,
  154.             TAG_DONE);
  155.             {
  156.                 LT_New(Handle,
  157.                     LA_Type,    XBAR_KIND,
  158.                     LAXB_FullSize,    TRUE,
  159.                 TAG_DONE);
  160.  
  161.                 LT_EndGroup(Handle);
  162.             }
  163.  
  164.             LT_New(Handle,LA_Type,HORIZONTAL_KIND,
  165.                 LAGR_SameSize,    TRUE,
  166.                 LAGR_Spread,    TRUE,
  167.             TAG_DONE);
  168.             {
  169.                 LT_New(Handle,
  170.                     LA_Type,    BUTTON_KIND,
  171.                     LA_LabelID,    MSG_GLOBAL_USE_GAD,
  172.                     LA_ID,        GAD_USE,
  173.                     LABT_ReturnKey,    TRUE,
  174.                     LABT_ExtraFat,    TRUE,
  175.                 TAG_DONE);
  176.  
  177.                 if(Default)
  178.                 {
  179.                     LT_New(Handle,
  180.                         LA_Type,    BUTTON_KIND,
  181.                         LA_LabelID,    MSG_GLOBAL_DEFAULT_GAD,
  182.                         LA_ID,        GAD_DEFAULT,
  183.                         LABT_ExtraFat,    TRUE,
  184.                     TAG_DONE);
  185.                 }
  186.  
  187.                 LT_New(Handle,
  188.                     LA_Type,    BUTTON_KIND,
  189.                     LA_LabelID,    MSG_GLOBAL_CANCEL_GAD,
  190.                     LA_ID,        GAD_CANCEL,
  191.                     LABT_EscKey,    TRUE,
  192.                     LABT_ExtraFat,    TRUE,
  193.                 TAG_DONE);
  194.  
  195.                 LT_EndGroup(Handle);
  196.             }
  197.  
  198.             LT_EndGroup(Handle);
  199.         }
  200.  
  201.         if(Window = LT_Layout(Handle,LocaleString(MSG_PATHPANEL_PATH_PREFERENCES_TXT),NULL,0,0,IDCMP_CLOSEWINDOW,0,
  202.             LAWN_HelpHook,        &GuideHook,
  203.             WA_DepthGadget,        TRUE,
  204.             WA_CloseGadget,        TRUE,
  205.             WA_DragBar,        TRUE,
  206.             WA_RMBTrap,        TRUE,
  207.             WA_Activate,        TRUE,
  208.         TAG_DONE))
  209.         {
  210.             struct IntuiMessage    *Message;
  211.             BOOLEAN             Done = FALSE;
  212.             ULONG             MsgClass,
  213.                          MsgQualifier;
  214.             UWORD             MsgCode;
  215.             struct Gadget        *MsgGadget;
  216.  
  217.             GuideContext(CONTEXT_PATHS);
  218.  
  219.             PushWindow(Window);
  220.  
  221.             LT_ShowWindow(Handle,TRUE);
  222.  
  223.             do
  224.             {
  225.                 if(Wait(PORTMASK(Window -> UserPort) | SIG_BREAK) & SIG_BREAK)
  226.                 {
  227.                     SaveConfig(PrivateConfig,Config);
  228.  
  229.                     break;
  230.                 }
  231.  
  232.                 while(Message = (struct IntuiMessage *)GT_GetIMsg(Window -> UserPort))
  233.                 {
  234.                     MsgClass    = Message -> Class;
  235.                     MsgQualifier    = Message -> Qualifier;
  236.                     MsgCode        = Message -> Code;
  237.                     MsgGadget    = (struct Gadget *)Message -> IAddress;
  238.  
  239.                     GT_ReplyIMsg(Message);
  240.  
  241.                     LT_HandleInput(Handle,MsgQualifier,&MsgClass,&MsgCode,&MsgGadget);
  242.  
  243.                     if(MsgClass == IDCMP_CLOSEWINDOW)
  244.                     {
  245.                         SaveConfig(PrivateConfig,Config);
  246.  
  247.                         Done = TRUE;
  248.                     }
  249.  
  250.                     if(MsgClass == IDCMP_GADGETUP)
  251.                     {
  252.                         switch(MsgGadget -> GadgetID)
  253.                         {
  254.                             case GAD_USE:
  255.  
  256.                                 Done = TRUE;
  257.                                 break;
  258.  
  259.                             case GAD_CANCEL:
  260.  
  261.                                 SaveConfig(PrivateConfig,Config);
  262.  
  263.                                 Cancel = Done = TRUE;
  264.                                 break;
  265.  
  266.                             case GAD_DEFAULT:
  267.  
  268.                                 *Default = TRUE;
  269.  
  270.                                 Done = TRUE;
  271.                                 break;
  272.                         }
  273.                     }
  274.  
  275.                     if(MsgClass == IDCMP_IDCMPUPDATE)
  276.                     {
  277.                         if(MsgGadget -> GadgetID >= GAD_AUPLOAD && MsgGadget -> GadgetID <= GAD_HELPFILE)
  278.                         {
  279.                             UBYTE             DummyBuffer[MAX_FILENAME_LENGTH],
  280.                                         *DummyChar;
  281.                             struct FileRequester    *FileRequest;
  282.  
  283.                             LT_LockWindow(Window);
  284.  
  285.                             strcpy(DummyBuffer,(STRPTR)LT_GetAttributes(Handle,MsgGadget -> GadgetID,TAG_DONE));
  286.  
  287.                             if(MsgGadget -> GadgetID < GAD_EDITOR || !DummyBuffer[0])
  288.                                 DummyChar = "";
  289.                             else
  290.                             {
  291.                                 if(FilePart(DummyBuffer) == DummyBuffer)
  292.                                     DummyBuffer[0] = 0;
  293.                                 else
  294.                                 {
  295.                                     DummyChar = PathPart(DummyBuffer);
  296.  
  297.                                     *DummyChar = 0;
  298.                                 }
  299.  
  300.                                 DummyChar = FilePart((STRPTR)LT_GetAttributes(Handle,MsgGadget -> GadgetID,TAG_DONE));
  301.                             }
  302.  
  303.                             if(FileRequest = GetFile(Window,LocaleString(MsgGadget -> GadgetID - GAD_AUPLOAD + MSG_PATHPANEL_SELECT_DEFAULT_ASCII_UPLOAD_PATH_TXT),DummyBuffer,DummyChar,DummyBuffer,NULL,FALSE,FALSE,MsgGadget -> GadgetID < GAD_EDITOR,LocaleString(MSG_GLOBAL_SELECT_TXT),TRUE))
  304.                             {
  305.                                 LT_SetAttributes(Handle,MsgGadget -> GadgetID,GTST_String,DummyBuffer,TAG_DONE);
  306.  
  307.                                 FreeAslRequest(FileRequest);
  308.                             }
  309.  
  310.                             LT_UnlockWindow(Window);
  311.                         }
  312.                     }
  313.                 }
  314.             }
  315.             while(!Done);
  316.  
  317.             PopWindow();
  318.         }
  319.  
  320.         LT_DeleteHandle(Handle);
  321.     }
  322.  
  323.     if(Default)
  324.         return((BYTE)(!Cancel));
  325.     else
  326.         return((BYTE)memcmp(PrivateConfig -> PathConfig,Config -> PathConfig,sizeof(struct PathSettings)));
  327. }
  328.